Technological advances in communications systems have provided the capability to connect to other users through a variety of modalities. For example, phone calls can be made using the standard wireline phone, cellular phones, or IP phones over the Internet. Moreover, the call can be made using mobile clients that operate on different devices such as desktop computers, laptops, PDAs, etc. Additionally, communications can be by voice, video, both voice and video, text messaging, etc. The communications capabilities can range from the latest device hardware and software, to legacy hardware and software, to no capabilities at all.
Thus, when deciding to communicate with a user it can be problematic to connect in a way that meets the requirements of the both users, the location, the time of day, and so on. For example, when placing an audio or video call, it is difficult to know if the remote party has audio/video capabilities on the connection device before placing the call. If the remote party does not have a webcam installed, then video capabilities cannot be performed.
In another example, it would be beneficial to know whether or not a user has logged on to an endpoint that has audio and/or video capability, or is willing to accept an audio and/or video call. For example, placing a voice call to a user that does not have voice call capability would waste time and cause frustration. Knowing by some indication that the recipient instead has instant messaging capability saves time and provides a more positive user experience. However, existing systems lack these rich capabilities thereby negatively impacting the user experience and usability.